Conventional database management systems provide stored data to client applications upon request. The data may be stored in local disks and/or local volatile memory (e.g., Random Access Memory) in order to enable fast access thereto. Some database management systems are also capable of pulling data from remote (and typically large-scale) data sources and providing this data to client applications.
A client application may request a dataset which includes local data and remote data. In order to respond to such a request, a conventional system may pull all of the remote data into its local file system, perform any required JOINS, and select the requested dataset. Alternatively, the local data may be moved to the remote data source, where the JOIN occurs and the dataset is selected.
Neither of the foregoing approaches is suitable in some cases. For example, if the remote data is large, the first approach may overwhelm the local system. The second approach presents difficulties if the remote data source is not equipped to efficiently handle disk-persisted table inserts.